package com.cqu.apptest.service.impl;

import com.cqu.apptest.service.FileService;
import com.cqu.springmvc.annotation.Service;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;

@Service //默认类名首字母小写 fileServiceImpl
public class FileServiceImpl implements FileService {

    @Override
    public String uploadFile(Part file, HttpServletRequest request) {
        String message = "";
        //判断文件是否为空
        if(file.getSize()!=0){
            try {
                //获取项目所在路径，绝对路径，用来放置文件
                String pathReal = request.getSession().getServletContext().getRealPath("/WEB-INF/");
                String[] ss = pathReal.split("\\\\");
                String path ="";
                for(String s : ss) {
                    path += s +"\\";
                    if(s.equals("spring-mvc-web")){
                        break;
                    }
                }
                path += "spring-mvc-web\\src\\main\\java\\com\\cqu\\apptest\\VirtualDB\\FileDatabase\\";
                //设置上传文件存放的目录
                File uploadFile = new File(path);
                //判断文件目录是否存在，如果不存在则新建对应目录
                if(!uploadFile.exists()){
                    //不存在则新建
                    uploadFile.mkdir();
                }

                //获取上传文件的文件名
                String originName = file.getSubmittedFileName();
                System.out.println("originalName："+originName);
                //获取上传文件的后缀名 从最后一个 . 开始截取
                String suffix = originName.substring(originName.lastIndexOf("."));
                //通过系统时间，生成随机文件名，避免多个上传文件重名
                String fileName =  originName + "(" + System.currentTimeMillis() + ")";
                //上传文件，转存文件到指定目录
                String finalPath = uploadFile.getPath()+"\\"+fileName;
                System.out.println("finalPath:"+finalPath);
                file.write(finalPath);
                //上传成功
                message = "上传成功";


            } catch (IOException e) {
                //上传失败
                message = "上传失败";
                e.printStackTrace();

            }
        }else{
            //上传失败
            message = "文件不存在";
        }
        return message;
    }

}
